iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Software Development

我在 Spring Boot 3 裡面挖呀挖呀挖系列 第 13

Day12 - yaml配置文件用法

  • 分享至 

  • xImage
  •  

Day12 - yaml配置文件用法

前言

Intellij預設Spring Boot的Application設定檔是Application.properties,你也可以把它改成Application.yaml,當properties檔內容一多相較於yaml檔會比較不好閱讀,它的層級結構就不是那麼明顯,以下我們就來談談yaml文件檔如何撰寫。以下可以比較一下可讀性。

properties

https://ithelp.ithome.com.tw/upload/images/20230928/201280847mYzQa8QKB.png

yaml

https://ithelp.ithome.com.tw/upload/images/20230928/20128084j3od4LXZ03.png
資料來源:https://www.baeldung.com/spring-boot-yaml-vs-properties

專案建立

創建day12_yaml module

https://ithelp.ithome.com.tw/upload/images/20230928/20128084bOc4pxNmWu.png

spring initializer

選取場景web與lombak
https://ithelp.ithome.com.tw/upload/images/20230928/20128084HKgQzO51j9.png

創建application.yaml

https://ithelp.ithome.com.tw/upload/images/20230928/20128084KJl9pefhWb.png

lombok

使用它可以簡化JavaBean的設定,在Class上方寫上註解@Data可以幫你自動生成constructer、getter/setter、toString、EqualsHashCode

yaml

YAML是"YAML Ain't a Markup Language"(YAML不是一種標記語言)的縮寫。YAML的意思其實是:"Yet Another Markup Language"(仍是一種標記語言),附檔名以yaml 或 yml結尾。

基本語法

  • 大小寫敏感
  • 用縮排表示層級關係,K: v,使用空格分割k,v
  • 縮排只允許使用空格
  • 縮排的空格數不重要只要相同層級的元素左側對其即可
  • 表示註解:#

其他

  • 保留換行(Newlines preserved):|
  • 摺疊換行(Newlines folded):>
  • 區分多個檔案:---
  • 單引號不會轉譯(\n會變成字串)
  • 雙引號會轉譯(\n會變成換行)

進階寫法

  • map
  • list
  • string、bool、date
yaml
employee:
  name: 'andy\n132'
  entryDay: 2023/5/20 09:00:00
  age: 35
  isEmployee: true
  supervisor:
    name: "novak\n 456"
    age: 42
    birthDay: 2018/10/12
    text[1]: bbb
    text[0]: aaa
  family-Members[1]:
    name: tim
    age: 2
  family-Members[0]:
    age: 3
    name: tom
  pets:
    c2:
      name: mimi
      age: 2
    c1:
      age: 3
      name: wang

properties
employee.name=andy
employee.age=35
employee.entryDay=2023/5/20 09:00:00
employee.isEmployee=true
employee.supervisor.name=novak
employee.supervisor.age=42
employee.supervisor.birthDay=2018/10/12
employee.supervisor.text[0]=aaa
employee.supervisor.text[1]=bbb
employee.family-Members[0].name=tom
employee.family-Members[0].age=3
employee.family-Members[1].name=tim
employee.family-Members[1].age=2
employee.pets.c1.name=wang
employee.pets.c1.age=3
employee.pets.c2.name=mimi
employee.pets.c2.age=2
java bean
@Component
@ConfigurationProperties(prefix = "employee")
@Data
public class Employee {
    private String name;
    private Integer age;
    private Date entryDay;
    private Boolean isEmployee;
    private Supervisor supervisor; //嵌套对象
    private List<FamilyMember> familyMembers; //数组(里面是对象)
    private Map<String,Pet> cats; //表示Map
}

@Data
public class FamilyMember {
    private String name;
    private Integer age;
}

@Data
public class Supervisor {
    private String name;
    private Integer age;
    private Date birthDay;
    private List<String> text; //数组
}

@Data
public class Pet {
    private String name;
    private Integer age;
}
呈現結果

https://ithelp.ithome.com.tw/upload/images/20230928/20128084tQ1Ma5fSfN.png

Reference


上一篇
Day11 - Spring Boot該學到什麼樣的程度
下一篇
Day13 - Logging
系列文
我在 Spring Boot 3 裡面挖呀挖呀挖31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言